package com.jike.noobmoney.net;

import com.jike.noobmoney.entity.BannerEntity;
import com.jike.noobmoney.entity.BaseEntity;
import com.jike.noobmoney.entity.CateListEntity;
import com.jike.noobmoney.entity.CheckNumEntity;
import com.jike.noobmoney.entity.CheckinEntity;
import com.jike.noobmoney.entity.DownloadUrlEntity;
import com.jike.noobmoney.entity.GoldPromotionEntity;
import com.jike.noobmoney.entity.InviteListEntity;
import com.jike.noobmoney.entity.JxwEntity;
import com.jike.noobmoney.entity.LimiteEntity;
import com.jike.noobmoney.entity.MessageEntity;
import com.jike.noobmoney.entity.MoneyEntity;
import com.jike.noobmoney.entity.MyPushDetailEntity;
import com.jike.noobmoney.entity.MyPushEntity;
import com.jike.noobmoney.entity.MyTaskEntity;
import com.jike.noobmoney.entity.NewEntity;
import com.jike.noobmoney.entity.NewTaskListEntity;
import com.jike.noobmoney.entity.NumEntity;
import com.jike.noobmoney.entity.OrderMoneyEntity;
import com.jike.noobmoney.entity.ProByCateEntity;
import com.jike.noobmoney.entity.RedrotEntity;
import com.jike.noobmoney.entity.ShenHeDetailEntity;
import com.jike.noobmoney.entity.ShenHeEntity;
import com.jike.noobmoney.entity.TaskListEntity;
import com.jike.noobmoney.entity.TaskMoneyEntity;
import com.jike.noobmoney.entity.TuosuInfo;
import com.jike.noobmoney.entity.UploadFileEntity;
import com.jike.noobmoney.entity.UploadFilesEntity;
import com.jike.noobmoney.entity.WXEntity;
import com.jike.noobmoney.entity.ZFBEntity;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;
import rx.Observable;


/**
 * Created by kekex on 2019/2/28.
 * new api
 */
public interface ApiStore {

    /**
     * 聚享玩的新用户注册
     */
    @GET("/")
    Call<JxwEntity> getJxw(@QueryMap(encoded = true) Map<String, String> queryMap);


    /**
     * 上传单张图片   用户发布任务uploadfile2
     */
    @Multipart
    @POST("renwu/singleuploadfile")
    Observable<UploadFileEntity> upload2(@Part List<MultipartBody.Part> partList);

    @Multipart
    @POST("renwu/singleuploadfile")
    Observable<UploadFileEntity> singleuploadfile(@Part List<MultipartBody.Part> partList);



    @Multipart
    @POST("renwu/uploadfile3")
    Observable<UploadFileEntity> upload3(@Part List<MultipartBody.Part> partList);


    @Multipart
    @POST("renwu/submituploadfile")
    Observable<UploadFileEntity> submituploadfile(@Part List<MultipartBody.Part> partList);

    @Multipart
    @POST("renwu/markuploadfile")
    Observable<UploadFileEntity> markuploadfile(@Part List<MultipartBody.Part> partList);

    /**
     * 上传单张图片   用户提交任务接口uploadfile
     */
    @Multipart
    @POST("renwu/uploadfile")
    Observable<UploadFileEntity> upload(@Part List<MultipartBody.Part> partList);

    /**
     * 上传多张图片   发布任务
     */
    @Multipart
    @POST("renwu/uploadImage")
    Observable<List<UploadFilesEntity>> uploadFiles(@Part List<MultipartBody.Part> partList);

    /**
     * 上传多张图片   提交任务/新手任务提交审核
     */
    @Multipart
    @POST("renwu/uploadImage2")
    Observable<List<UploadFilesEntity>> uploadFiles2(@Part List<MultipartBody.Part> partList);

    /**
     * 首页轮播
     */
    @POST("renwu/homelistapi")
    Observable<BannerEntity> getBanner();

    /**
     * 用户余额
     */
    @FormUrlEncoded
    @POST("renwu/moneyviewapi")
    Observable<MoneyEntity> moneyView(
            @Field("u_id") String u_id
    );
    /**
     * 上传广告
     */
    @FormUrlEncoded
    @POST("renwu/moneyviewapi")
    Observable<MoneyEntity> updateVideo(
            @Field("u_id") String u_id
    );

    /**
     * 签到
     */
    @FormUrlEncoded
    @POST("renwu/checkinapi")
    Observable<CheckinEntity> checkin(
            @Field("u_id") String u_id
    );

    /**
     * 意见反馈
     */
    @FormUrlEncoded
    @POST("renwu/feedbackaddapi")
    Observable<BaseEntity> feedback(
            @Field("u_id") String u_id,
            @Field("text") String text
    );

    /**
     * 新手任务
     */
    @FormUrlEncoded
    @POST("renwu/newusertasklistapi")
    Observable<NewTaskListEntity> newusertasklist(
            @Field("u_id") String u_id
    );

    /**
     * 视频回调
     */
    @FormUrlEncoded
    @POST("renwu/videoreception")
    Observable<BaseEntity> callbackVideo(
            @Field("u_id") String u_id,
              @Field("deviceno") String deviceno,
            @Field("type") Integer type,
            @Field("ischeck") Integer ischeck,
            @Field("time") long time,
            @Field("sign") String sign

    );

    /**
     * 游戏时长回调
     */
    @FormUrlEncoded
    @POST("renwu/ddtimereception")
    Observable<BaseEntity> callbackGame(
            @Field("u_id") String u_id,
            @Field("deviceno") String deviceno,
            @Field("gameid") String gameid,
            @Field("gamename") String gamename,
            @Field("gametype") String gametype,
            @Field("time") Integer time,
            @Field("sign") String sign
    );

    /**
     * 任务奖励情况
     */
    @FormUrlEncoded
    @POST("renwu/dailydarelistapi")
    Observable<NumEntity> getNum(
            @Field("u_id") String u_id
    );
    /**
     * 每日签到任务奖励情况
     */
    @FormUrlEncoded
    @POST("renwu/dailychecklistapi")
    Observable<CheckNumEntity> getCheckNum(
            @Field("u_id") String u_id
    );

    /**
     * 新手任务完成
     */
    @FormUrlEncoded
    @POST("renwu/newusertasksuccess")
    Observable<BaseEntity> newusertasksuccess(
            @Field("u_id") String u_id,
            @Field("flag") String flag
    );

    /**
     * 新手任务完成领取奖励
     */
    @FormUrlEncoded
    @POST("renwu/newusertaskreceiveapi")
    Observable<BaseEntity> newusertaskreceive(
            @Field("u_id") String u_id,
            @Field("flag") String flag
    );

    /**
     * 每日签到完成领取奖励
     */
    @FormUrlEncoded
    @POST("renwu/dailycheckreceiveapi")
    Observable<BaseEntity> checkinreceive(
            @Field("u_id") String u_id,
            @Field("flag") String flag
    );

    /**
     * 任务完成领取奖励
     */
    @FormUrlEncoded
    @POST("renwu/dailydarereceiveapi")
    Observable<BaseEntity> taskusertaskreceive(
            @Field("u_id") String u_id,
            @Field("flag") String flag
    );

    /**
     * 新手任务提交关注微信和QQ
     */
    @FormUrlEncoded
    @POST("renwu/newusertaskimage")
    Observable<BaseEntity> newusertaskimage(
            @Field("u_id") String u_id,
            @Field("flag") String flag,
            @Field("image") String image

    );

    /**
     * 邀请好友列表
     */
    @FormUrlEncoded
    @POST("renwu/userinvitelistapi")
    Observable<InviteListEntity> userinvitelist(
            @Field("u_id") String u_id
    );


    /**
     * 任务分类
     */
    @POST("renwu/catelistapi")
    Observable<CateListEntity> catelist();

    /**
     * 任务列表
     */
    @FormUrlEncoded
    @POST("renwu/tasklistapi")
    Observable<TaskListEntity> getTaskList(
            @Field("u_id") String u_id,
            @Field("c_id") String c_id,
            @Field("page") String page,
            @Field("pagesize") String pagesize,
            @Field("sortclasses") String sortclasses,
            @Field("sorttype") String sorttype


    );
    /**
     * 搜索结果列表
     */
    @FormUrlEncoded
    @POST("renwu/selecttasklistapi")
    Observable<TaskListEntity> getSearchTaskList(
            @Field("u_id") String u_id,
            @Field("text") String text


    );

    /**
     * 分类下的属性控制
     */
    @FormUrlEncoded
    @POST("renwu/limittimelistapi")
    Observable<ProByCateEntity> getPropertyByCate(
            @Field("c_id") String c_id
    );




    /**
     * 热门任务
     */
    @FormUrlEncoded
    @POST("renwu/taskrmlistapi")
    Observable<TaskListEntity> getTuiJianList(
            @Field("u_id") String u_id,
            @Field("page") String page,
            @Field("pagesize") String pagesize
    );

    /**
     * 公告列表
     */
    @FormUrlEncoded
    @POST("renwu/newslistapi")
    Observable<NewEntity> getNewList(
            @Field("page") String page,
            @Field("pagesize") String pagesize
    );



    /**
     * 今日推荐
     */
    @FormUrlEncoded
    @POST("renwu/tasktoplistapi")
    Observable<TaskListEntity> getJinRiList(
            @Field("u_id") String u_id,
            @Field("c_id") String c_id,
            @Field("page") String page,
            @Field("pagesize") String pagesize
    );

    /**
     * 官方推荐
     */
    @FormUrlEncoded
    @POST("renwu/tasktjlistapi")
    Observable<TaskListEntity> getGuanfangList(
            @Field("u_id") String u_id,
            @Field("page") String page,
            @Field("pagesize") String pagesize
    );


    /**
     * 微信支付
     */
    @FormUrlEncoded
    @POST("renwu/wxpayapi")
    Observable<WXEntity> weixinPay(
            @Field("u_id") String u_id,
            @Field("money") String money
    );

    /**
     * 支付宝支付
     */
    @FormUrlEncoded
    @POST("renwu/alipayappapi")
    Observable<ZFBEntity> zhifubaoPay(
            @Field("u_id") String u_id,
            @Field("money") String money
    );

    /**
     * 拉取支付限制
     */
    @FormUrlEncoded
    @POST("renwu/chongzhilimitapi")
    Observable<LimiteEntity> zhifubaoLimite(
            @Field("u_id") String u_id
    );

    /**
     * 发布者排行榜
     */
    @POST("renwu/taskmoneylist")
    Observable<TaskMoneyEntity> getPushList();

    /**
     * 邀请排行榜
     */
    @POST("renwu/goldpromotion")
    Observable<GoldPromotionEntity> getInviteList();


    /**
     * 1.发布排行
     */
    @FormUrlEncoded
    @POST
    Observable<TaskMoneyEntity> getPushListNew(
            @Url String url,
            @Field("type") String type
    );

    /**
     * 2.完成任务数量排行
     */
    @FormUrlEncoded
    @POST("renwu/orderweekrankapi")
    Observable<OrderMoneyEntity> getOrderListNew(
            @Field("type") String type
    );

    /**
     * 3.邀请数量排行
     */
    @FormUrlEncoded
    @POST
    Observable<GoldPromotionEntity> getInviteListNew(
            @Url String url,
            @Field("type") String type
    );

    @FormUrlEncoded
    @POST("renwu/appealinfoapi")
    Observable<TuosuInfo> getAppealinfo(
            @Field("o_id") String o_id
    );


    /**
     * 发布任务
     *
     * @top top "1"为置顶 "0"为不置顶
     */
    @FormUrlEncoded
    @POST("renwu/taskadd")
    Observable<BaseEntity> pushTask(
            @Field("u_id") String u_id,
            @Field("c_id") int c_id,
            @Field("taskname") String taskname,
            @Field("money") double money,
            @Field("number") int number,
            @Field("top") String top,
            @Field("text") String text,
            @Field("image") String image
    );

    @FormUrlEncoded
    @POST("renwu/taskadd2")
    Observable<BaseEntity> pushTask2(
            @Field("u_id") String u_id,
            @Field("c_id") int c_id,
            @Field("taskname") String taskname,
            @Field("money") double money,
            @Field("number") int number,
            @Field("top") String top,
            @Field("text") String text,
            @Field("opentype") String opentype,
            @Field("openurl") String openurl,
            @Field("step") String step
    );

    @FormUrlEncoded
    @POST("renwu/taskadd2")
    Observable<BaseEntity> pushTask3(
            @Field("t_id") String t_id,
            @Field("u_id") String u_id,
            @Field("c_id") int c_id,
            @Field("taskname") String taskname,
            @Field("money") double money,
            @Field("number") int number,
            @Field("top") String top,
            @Field("text") String text,
            @Field("opentype") String opentype,
            @Field("openurl") String openurl,
            @Field("step") String step
    );
//    @FormUrlEncoded
//    @POST("renwu/taskaddapi")
//    Observable<BaseEntity> pushTaskLast(
//            @Field("u_id") String u_id,
//            @Field("c_id") String c_id,
//            @Field("taskname") String taskname,
//            @Field("title") String title,
//            @Field("money") String money,
//            @Field("number") String number,
//            @Field("text") String text,
//            @Field("top") String top,
//            @Field("opentype") String opentype,
//            @Field("openurl") String openurl,
//            @Field("step") String step,
//            @Field("isinfo") String isinfo,
//            @Field("isrepeat") String isrepeat,
//             @Field("limittime_id1") String limittime_id1,
//            @Field("limittime_id2") String limittime_id2,
//            @Field("limittime_id3") String limittime_id3,
//            @Field("sign") String sign
//    );

    @FormUrlEncoded
    @POST("renwu/taskaddapi")
    Observable<BaseEntity> pushTaskLast(
            @Field("u_id") String u_id,
            @Field("c_id") int c_id,
            @Field("taskname") String taskname,
            @Field("title") String title,
            @Field("money") double money,
            @Field("number") int number,
            @Field("text") String text,
            @Field("top") String top,
            @Field("opentype") String opentype,
            @Field("openurl") String openurl,
            @Field("step") String step,
            @Field("isinfo") String isinfo,
            @Field("isrepeat") String isrepeat,
            @Field("limittime_id1") String limittime_id1,
            @Field("limittime_id2") String limittime_id2,
            @Field("limittime_id3") String limittime_id3,
            @Field("sign") String sign
    );
    //新的任务修改
    @FormUrlEncoded
    @POST("renwu/taskaddeditapi")
    Observable<BaseEntity> pushTaskUpateLast(
            @Field("t_id") String t_id,
            @Field("u_id") String u_id,
            @Field("c_id") int c_id,
            @Field("taskname") String taskname,
            @Field("title") String title,
            @Field("money") double money,
            @Field("number") int number,
            @Field("text") String text,
            @Field("top") String top,
            @Field("opentype") String opentype,
            @Field("openurl") String openurl,
            @Field("step") String step,
            @Field("isinfo") String isinfo,
            @Field("isrepeat") String isrepeat,
            @Field("limittime_id1") String limittime_id1,
            @Field("limittime_id2") String limittime_id2,
            @Field("limittime_id3") String limittime_id3,
            @Field("sign") String sign
    );

    /**
     * 我的任务
     */
    @FormUrlEncoded
    @POST("renwu/orderlistapi")
    Observable<MyTaskEntity> getMyTask(
            @Field("u_id") String u_id,
            @Field("status") String status
    );

    /**
     * 我的发布
     */
    @FormUrlEncoded
    @POST("renwu/usertasklistapi")
    Observable<MyPushEntity> getMyPush(
            @Field("u_id") String u_id,
            @Field("status") String status,
            @Field("page") String page,
            @Field("pagesize") String pagesize
    );

    /**
     * 退款
     */
    @FormUrlEncoded
    @POST("renwu/usertaskcancelapi")
    Observable<BaseEntity> tuikuan(
            @Field("t_id") String t_id
    );

    /**
     * 加票
     */
    @FormUrlEncoded
    @POST("renwu/tasknumberaddapi")
    Observable<BaseEntity> jiapiao(
            @Field("t_id") String t_id,
            @Field("number") String number
    );

    /**
     * 上架
     */
    @FormUrlEncoded
    @POST("renwu/usertaskopenapi")
    Observable<BaseEntity> up(
            @Field("t_id") String t_id
    );

    /**
     * 上架
     */
    @FormUrlEncoded
    @POST("renwu/usertaskcloseapi")
    Observable<BaseEntity> down(
            @Field("t_id") String t_id
            );



    /**
     * 置顶
     */
    @FormUrlEncoded
    @POST("renwu/tasktopapi")
    Observable<BaseEntity> top(
            @Field("t_id") String t_id,
            @Field("hournumber") String hournumber
    );



    @FormUrlEncoded
    @POST("renwu/uploadusersubmitfileapi")
    Observable<DownloadUrlEntity> showUrl(
            @Field("t_id") String t_id
    );

    /**
     * 我的发布详情
     */
    @FormUrlEncoded
    @POST("renwu/usertaskinfoapi")
    Observable<MyPushDetailEntity> getMyPushDetail(
            @Field("t_id") String t_id
    );

    /**
     * 审核列表
     */
    @FormUrlEncoded
    @POST("renwu/userorderlistapi")
    Observable<ShenHeEntity> getShenHeList(
            @Field("t_id") String t_id,
            @Field("status") String status
    );

    /**
     * 审核详情
     */
    @FormUrlEncoded
    @POST("renwu/userorderinfoapi")
    Observable<ShenHeDetailEntity> getShenHeDetail(
            @Field("o_id") String o_id
    );

    /**
     * 通过
     */
    @FormUrlEncoded
    @POST("renwu/adminorderdshtrueajax")
    Observable<BaseEntity> shenHeYes(
            @Field("id") String id
    );

    @FormUrlEncoded
    @POST("renwu/ordertrueapi")
    Observable<BaseEntity> shenHeYesNew(
            @Field("o_id") String o_id,
            @Field("u_id") String u_id,
            @Field("sign") String sign
    );

    /**
     * 不通过
     */
    @FormUrlEncoded
    @POST("renwu/orderfalseapi")
    Observable<BaseEntity> shenHeNo(
            @Field("o_id") String o_id,
            @Field("falsetext") String falsetext
    );

    /**
     * 投诉
     */
    @FormUrlEncoded
    @POST("renwu/taskappealaddapi")
    Observable<BaseEntity> tousu(
            @Field("o_id") String o_id,
            @Field("text") String falsetext
    );

    /**
     * 提现
     */
    @FormUrlEncoded
    @POST("renwu/tixianapi")
    Observable<BaseEntity> getTiXian(
            @Field("u_id") String u_id,
            @Field("money") String money
    );
    /**
     * 余额微信提现
     */
    @FormUrlEncoded
    @POST("renwu/rwwxtixianapi")
    Observable<BaseEntity> getWXTiXian(
            @Field("u_id") String u_id,
            @Field("money") String money
    );
    /**
     * 微信绑定
     */
    @FormUrlEncoded
    @POST("renwu/wxbindapi")
    Observable<BaseEntity> bindWX(
            @Field("openid") String openid,
            @Field("wxnick") String wxnick,
            @Field("sign") String sign
    );



    /**
     * 任务提现
     */
    @FormUrlEncoded
    @POST("renwu/rwtixianapi")
    Observable<BaseEntity> getrwTiXian(
            @Field("u_id") String u_id,
            @Field("money") String money
    );
    /**
     * 任务微信提现
     */
    @FormUrlEncoded
    @POST("renwu/wxtixianapi")
    Observable<BaseEntity> getrwWXTiXian(
            @Field("u_id") String u_id,
            @Field("money") String money
    );

    /**
     * 消息
     */
    @FormUrlEncoded
    @POST("renwu/messagelistapi")
    Observable<MessageEntity> getMessage(
            @Field("u_id") String u_id
    );

    /**
     * 消息未读数
     */
    @FormUrlEncoded
    @POST("renwu/messagenumberapi")
    Observable<RedrotEntity> getRedrot(
            @Field("u_id") String u_id
    );

    /**
     * 消息已读
     */
    @FormUrlEncoded
    @POST("renwu/messageseeapi")
    Observable<BaseEntity> setReaded(
            @Field("u_id") String u_id,
            @Field("msg_id") String msg_id
    );


    /**
     * 编辑个人信息1
     */
    @FormUrlEncoded
    @POST("renwu/usereditapi")
    Observable<BaseEntity> editUserInfo1(
            @Field("u_id") String u_id,
            @Field("nick") String nick,
            @Field("name") String name,
            @Field("idcard") String idcard,
            @Field("alipayaccount") String alipayaccount,
            @Field("mobile") String mobile,
            @Field("msgcode") String msgcode
    );

    /**
     * 编辑个人信息2
     */
    @FormUrlEncoded
    @POST("renwu/usertxeditapi")
    Observable<BaseEntity> editUserInfo2(
            @Field("u_id") String u_id,
            @Field("avatar") String avatar
    );

}
